﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestorDeFlotasDesktop.GD1C2012DataSetTableAdapters;
using GestorDeFlotas.Core;


namespace GestorDeFlotasDesktop.AbmReloj
{
    public partial class AbmReloj : FormABMBase
    {
        public static int BLANCO = 0;
        public AbmReloj(ModoAbm modoAbm): base(modoAbm)
        {
            InitializeComponent();
        }

        private void tL_RelojesBindingNavigatorSaveItem_Click(object sender, EventArgs e)
        {
            this.Validate();
            this.tL_RelojesBindingSource.EndEdit();
            this.tableAdapterManager.UpdateAll(this.gD1C2012DataSet);

        }

        /*Carga inicial de los componentes del ABM*/
        private void AbmReloj_Load(object sender, EventArgs e)
        {
            // TODO: esta línea de código carga datos en la tabla 'gD1C2012DataSet.TL_Relojes' Puede moverla o quitarla según sea necesario.
            this.tL_RelojesTableAdapter.Fill(this.gD1C2012DataSet.TL_Relojes);

            GD1C2012DataSet.TL_Marcas_RelojesDataTable marcasDT = new GD1C2012DataSet.TL_Marcas_RelojesDataTable();
            TL_Marcas_RelojesTableAdapter marcas = new TL_Marcas_RelojesTableAdapter();
            marcas.Fill(marcasDT);

            foreach (var item in marcasDT)
            {
                 this.comboBox_marcas.Items.Add(new ItemCombo(item.marca_codigo, item.marca_nombre));
            }
        }

        private void RefrescarDataGrid()
        {
            // Codigo para refrescar el DataGridView
            this.gD1C2012DataSet.GetChanges();
            this.tL_RelojesTableAdapter.Fill(this.gD1C2012DataSet.TL_Relojes);

        }
        /*Este metodo esta encargado de limpiar los filtros de busqueda*/
        private void boton_limpiar_Click(object sender, EventArgs e)
        {
            textBox_modelo.Clear();
            textBox_Nro_de_Serie.Clear();
            comboBox_marcas.Text ="";
            comboBox_marcas.SelectedIndex = BLANCO;
        }

        private void boton_buscar_Click(object sender, EventArgs e)
        {
            ItemCombo optionSelected = (ItemCombo)this.comboBox_marcas.SelectedItem;

            if (optionSelected == null) { 
                optionSelected = new ItemCombo(-1, "");
                this.comboBox_marcas.SelectedIndex = BLANCO;
            }

            if (this.comboBox_marcas.SelectedIndex == BLANCO) 
            {
                this.tL_RelojesTableAdapter.FillBy_Modelo_nroSerie(this.gD1C2012DataSet.TL_Relojes, string.Format("%{0}%", this.textBox_modelo.Text), string.Format("%{0}%", this.textBox_Nro_de_Serie.Text));
            }
            else
            {
                this.tL_RelojesTableAdapter.FillBy_Marca_Modelo_nroSerie(this.gD1C2012DataSet.TL_Relojes, optionSelected.Codigo, string.Format("%{0}%", this.textBox_modelo.Text), string.Format("%{0}%", this.textBox_Nro_de_Serie.Text));
            }
                
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void tL_RelojesDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void boton_agregar_Click(object sender, EventArgs e)
        {
            DatosReloj datosCliente = new DatosReloj(ModoAbm.Alta);
            if (datosCliente.ShowDialog() == DialogResult.OK)
            {
                RefrescarDataGrid();
            }
        }

        private void boton_cerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void tL_RelojesDataGridView_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex < 0 || (e.ColumnIndex !=
       tL_RelojesDataGridView.Columns["modificar_reloj"].Index && e.ColumnIndex != tL_RelojesDataGridView.Columns["eliminar_reloj"].Index)) return;
            Int32 reloj_codigo = (Int32)tL_RelojesDataGridView["reloj_codigo", e.RowIndex].Value;

           
            if (e.ColumnIndex == tL_RelojesDataGridView.Columns["modificar_reloj"].Index)
            {

                DatosReloj datosReloj = new DatosReloj(ModoAbm.Modificacion, new Reloj(reloj_codigo).Cargar());
                if (datosReloj.ShowDialog() == DialogResult.OK)
                {
                    RefrescarDataGrid();
                }
            }
            else if (e.ColumnIndex == tL_RelojesDataGridView.Columns["eliminar_reloj"].Index)
            {
                if ((Boolean)tL_RelojesDataGridView["reloj_es_activo", e.RowIndex].Value)
                {
                    if (estaElRelojAsignado(reloj_codigo)) {
                        MessageBox.Show(string.Format("El Reloj que desactivara, esta actualmente asignado a un Taxi."));
                    }
                    new Reloj(reloj_codigo).SetInactivo();
                    RefrescarDataGrid();
                }
            }
        }

        public bool estaElRelojAsignado(int codigoReloj) 
        {
            TL_RelojesTableAdapter relojes = new TL_RelojesTableAdapter();
            return ((int)relojes.ScalarQueryVerificarQueElRelojNoEsteAsignado(codigoReloj) == 1);
        }

    }
}
